//
//  TYZBaseViewController.h
//  DriveSchoolCoach
//
//  Created by TangBin on 2019/7/4.
//  Copyright © 2019 TangBin. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "TYZNoDataOrErrorView.h"
#import "ZHNavView.h"
#import "UIViewController+TYZComponentSize.h"

NS_ASSUME_NONNULL_BEGIN

@interface TYZBaseViewController : UIViewController

/// 自定义navbar
@property (nonatomic, strong) ZHNavView *custNavView;

@property (nonatomic, copy) NSString *navViewTitle;

/**
 没有数据的时候显示的视图
 */
@property (nonatomic, strong) TYZNoDataOrErrorView *noDataView;

@property (nonatomic, strong) UIScrollView *rootContent;

/**
 忽略多少scrollView的contentInset的top
 */
@property (nonatomic, assign) CGFloat ignoredScrollViewContentInsetTop;

/** 忽略多少scrollView的contentInset的bottom */
@property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom;

/**
 *  执行完后，可能有一些值需要返回
 */
@property (nonatomic, copy, nullable) void (^popResultBlock)(id _Nullable data);

/**
 *  初始化变量
 */
- (void)initWithVar NS_REQUIRES_SUPER;

/**
 *  初始化navbar视图
 */
- (void)initWithNavBar NS_REQUIRES_SUPER;

/**
 *  初始化子视图
 */
- (void)initWithSubView NS_REQUIRES_SUPER;

/**
 *  初始化返回按钮
 */
- (void)initWithBackButton;

- (void)initWithRootContent:(BOOL)isRefresh;

/**
 *  解析数据
 *
 *  @param respond 从服务端返回来的
 */
//- (void)dataParse:(TYZRespondDataEntity *)respond;

/**
 *  从服务端请求数据
 */
- (void)fromServerRequestData;

/**
 *  返回按钮函数
 *
 *  @param sender 传进来的参数
 */
- (void)clickedBack:(nullable id)sender;

- (void)updateWithBackImage:(NSString *)imageName;

/**
 iPhone/iOS开启个人热点的相关位置调整
 
 @param isHotSpot YES表示存在热点；否则NO
 */
- (void)layoutControllerSubViewsHotSpot:(BOOL)isHotSpot;

/**
 隐藏或者显示没有数据的视图
 
 @param hidden hidden description
 */
- (void)noDataViewHidden:(BOOL)hidden;

/**
 绑定viewmodel
 */
- (void)bindViewModel;

/**
 初始化viewmodel
 */
- (void)initWithViewModel;




#pragma mark - 当有下来刷新的时候使用

/// 初始化
/// @param firstShowRefresh 第一次进入页面的时候，是否显示下拉刷新
- (instancetype)initWithFirstShowRefresh:(BOOL)firstShowRefresh;

/**
 是否所有数据读取完毕。默认未NO
 */
@property (nonatomic, assign) BOOL isAllFinished;


/**
 是“下拉”还是“上拉”，YES表示“下拉”
 */
@property (nonatomic, assign) BOOL isHeadRefresh;

@property (nonatomic, assign, readonly) BOOL isHeaderRefreshing;


- (void)beginRefreshing;

/**
 下拉刷新数据
 */
- (void)doRefreshData; // NS_REQUIRES_SUPER

/**
 结束所有刷新
 */
- (void)endAllRefreshing; // NS_REQUIRES_SUPER

/**
 下拉刷新结束
 */
- (void)endHeaderRefreshing; // NS_REQUIRES_SUPER

/**
 隐藏header
 
 @param hidden hidden description
 */
- (void)hiddenHeaderView:(BOOL)hidden;



@end

NS_ASSUME_NONNULL_END

